package io.gitee.milklynk.vo.response;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import java.util.List;
import java.util.Optional;

/** */
@Data
public class ChatResponse {
    /**
     * 该对话的唯一标识符。
     */
    @JSONField(name = "id")
    private String id;

    /**
     * 模型生成的 completion 的选择列表。
     */
    @JSONField(name = "choices")
    private List<Choice> choices;

    /**
     * 创建聊天的 Unix 时间戳（以秒为单位）。
     */
    @JSONField(name = "created")
    private Integer created;

    /**
     * 生成该 completion 的模型名。
     */
    @JSONField(name = "model")
    private String model;

    /**
     * 此指纹表示模型运行时使用的后端配置。
     */
    @JSONField(name = "system_fingerprint")
    private String systemFingerprint;

    /**
     * 对象的类型, 其值为 chat.completion。
     */
    @JSONField(name = "object")
    private String object;

    /**
     * 该对话请求的用量信息。
     */
    @JSONField(name = "usage")
    private Usage usage;

    /**
     * @return 委托返回第一选项的消息对象 即.getChoices().getFirst().getMessage();
     */
    public Choice.Message getFirstChoiceMessage() {
        return Optional.ofNullable(choices)
                .filter(cs -> !cs.isEmpty())
                .map(List::getFirst)
                .map(Choice::getMessage)
                .orElse(null);
    }

}
